package org.rocko.demos.colorfilter; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private ImageView head; private FrameLayout bg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(getApplicationContext(), "点击头像背景", Toast.LENGTH_SHORT).show(); bg = (FrameLayout) findViewById(R.id.head_bg); head = (ImageView) findViewById(R.id.head); head.setImageDrawable(new CircleDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.small))); bg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { initAvatarBackground(); } }); } private void initAvatarBackground() { Drawable drawable = getResources().getDrawable(R.drawable.rocko); Bitmap srcBitmap = BitmapUtils.drawable2Bitmap(drawable); /*先黑白图片*/ float[] src = new float[]{ 0.28F, 0.60F, 0.40F, 0, 0, 0.28F, 0.60F, 0.40F, 0, 0, 0.28F, 0.60F, 0.40F, 0, 0, 0, 0, 0, 1, 0, }; ColorMatrix cm = new ColorMatrix(src); // cm.setSaturation(0.0f); ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm); Bitmap resultBitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(resultBitmap); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setAlpha(100); paint.setColorFilter(f); canvas.drawBitmap(srcBitmap, 0, 0, paint); /*后模糊图片*/ Bitmap bB = BitmapUtils.blurBitmap(getApplicationContext(), resultBitmap, 15.5f); bg.setBackgroundDrawable(new BitmapDrawable(getResources(), bB)); } }